const fs = require("fs");
const path = require("path");

// 读取所有一言句子文件
const a = JSON.parse(
  fs.readFileSync(path.join(__dirname, "../../资源/一言句子/a.json"), "utf8")
);
const b = JSON.parse(
  fs.readFileSync(path.join(__dirname, "../../资源/一言句子/b.json"), "utf8")
);
const c = JSON.parse(
  fs.readFileSync(path.join(__dirname, "../../资源/一言句子/c.json"), "utf8")
);
const d = JSON.parse(
  fs.readFileSync(path.join(__dirname, "../../资源/一言句子/d.json"), "utf8")
);
const e = JSON.parse(
  fs.readFileSync(path.join(__dirname, "../../资源/一言句子/e.json"), "utf8")
);
const f = JSON.parse(
  fs.readFileSync(path.join(__dirname, "../../资源/一言句子/f.json"), "utf8")
);
const g = JSON.parse(
  fs.readFileSync(path.join(__dirname, "../../资源/一言句子/g.json"), "utf8")
);
const h = JSON.parse(
  fs.readFileSync(path.join(__dirname, "../../资源/一言句子/h.json"), "utf8")
);
const i = JSON.parse(
  fs.readFileSync(path.join(__dirname, "../../资源/一言句子/i.json"), "utf8")
);
const j = JSON.parse(
  fs.readFileSync(path.join(__dirname, "../../资源/一言句子/j.json"), "utf8")
);
const k = JSON.parse(
  fs.readFileSync(path.join(__dirname, "../../资源/一言句子/k.json"), "utf8")
);
const l = JSON.parse(
  fs.readFileSync(path.join(__dirname, "../../资源/一言句子/l.json"), "utf8")
);

// 将所有类型数据存储在一个对象中，方便访问
const _所有类型数据 = { a, b, c, d, e, f, g, h, i, j, k, l };
const _句子类型名称对照 = {
  a: "动画",
  b: "漫画",
  c: "游戏",
  d: "文学",
  e: "原创",
  f: "来自网络",
  g: "其他",
  h: "影视",
  i: "诗词",
  j: "网易云",
  k: "哲学",
  l: "抖机灵",
};

module.exports = function fn一言句子(_类型, _返回格式, _最小长度, _最大长度) {
  // 筛选句子类型，类型如果是all，则随机选取类型

  // console.log(`_返回格式${_返回格式}`);

  let _句子类型 = _类型;
  let _句子列表 = [];

  if (_类型 == "all") {
    const 类型列表 = Object.keys(_所有类型数据);
    _句子类型 = 类型列表[Math.floor(Math.random() * 类型列表.length)];
  }
  _句子列表 = _所有类型数据[_句子类型];

  console.log(`句子类型：${_句子类型名称对照[_句子类型]}`);

  // 筛选长度范围内的句子
  let _筛选后句子 = _句子列表.filter((句子) => {
    const 长度 = 句子.length;
    return 长度 >= _最小长度 && 长度 <= _最大长度;
  });

  // 从最终筛选结果中随机获取一个值
  const _随机句子 = _筛选后句子[Math.floor(Math.random() * _筛选后句子.length)];

  // 筛选返回类型，0 返回json，否则返回纯文本

  let _返回值 = {
    类型: _句子类型名称对照[_句子类型],
    内容: _随机句子.hitokoto,
    出处: _随机句子.from || "未知",
    作者: _随机句子.from_who || "未知",
    长度: _随机句子.length,
    lx: _句子类型名称对照[_句子类型],
    nr: _随机句子.hitokoto,
    cc: _随机句子.from || "未知",
    zz: _随机句子.from_who || "未知",
    cd: _随机句子.length,
  };

  if (_返回格式 == 1) {
    _返回值 = _随机句子.hitokoto;
  }

  return _返回值;
};
